Skip to main content

SSL/TLS certificates management

SSL/TLS (Secure Sockets Layer / Transport Layer Security) — bu tarmoq orqali uzatilayotgan ma’lumotlarni shifrlash va himoyalash uchun ishlatiladigan protokollar. Zamonaviy veb-xizmatlar va serverlar uchun SSL/TLS sertifikatlari xavfsizlikning eng muhim qismi hisoblanadi. Sertifikatlar yordamida foydalanuvchi va server o‘rtasidagi aloqalar shifrlanadi, ma’lumotlar uchinchi tomon tomonidan o‘qilmaydi va o‘zgartirilmaydi.


1. SSL/TLS sertifikati nima?

SSL/TLS sertifikati — bu serverning haqiqiyligini tasdiqlovchi va tarmoq orqali uzatilayotgan ma’lumotlarni shifrlovchi raqamli hujjat. Sertifikatda server nomi, egasi, amal qilish muddati va shifrlash kalitlari haqida ma’lumotlar bo‘ladi.

Sertifikat turlari:

  • Self-signed — o‘zingiz yaratgan, test va ichki tarmoqlar uchun.
  • CA-signed — rasmiy sertifikatlash markazi (CA) tomonidan tasdiqlangan, ommaviy xizmatlar uchun.
  • Wildcard — bir nechta subdomenlar uchun bitta sertifikat.
  • SAN (Subject Alternative Name) — bir nechta domen va subdomenlarni bitta sertifikatda ko‘rsatish.

2. Sertifikat yaratish va o‘rnatish

2.1. Self-signed sertifikat yaratish (test uchun)

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/server.key \
-out /etc/ssl/certs/server.crt

Izoh:

  • server.key — maxfiy kalit
  • server.crt — sertifikat fayli
  • -days 365 — amal qilish muddati

2.2. Sertifikat so‘rovi (CSR) yaratish

Agar CA orqali rasmiy sertifikat olmoqchi bo‘lsangiz:

openssl req -new -newkey rsa:2048 -nodes \
-keyout /etc/ssl/private/server.key \
-out /etc/ssl/certs/server.csr

CSR faylini CA (sertifikatlash markazi)ga yuborasiz va tasdiqlangan sertifikat olasiz.


3. Sertifikatni serverga o‘rnatish

3.1. Apache uchun

/etc/apache2/sites-available/default-ssl.conf faylini tahrirlang:

SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

So‘ngra, SSL modulini yoqing va saytni ishga tushiring:

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl reload apache2

3.2. Nginx uchun

/etc/nginx/sites-available/default faylini tahrirlang:

server {
listen 443 ssl;
server_name example.uz;

ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;

location / {
# ...
}
}

So‘ngra, Nginx xizmatini qayta ishga tushiring:

sudo systemctl reload nginx

4. Sertifikatni tekshirish va monitoring

4.1. Sertifikat amal qilish muddatini tekshirish

openssl x509 -enddate -noout -in /etc/ssl/certs/server.crt

4.2. Onlayn tekshiruvlar

  • SSL Labs — serveringizni onlayn tekshirish va xavfsizlik darajasini baholash.
  • crt.sh — sertifikatlar tarixini ko‘rish.

5. Let's Encrypt bilan bepul sertifikat olish

Let's Encrypt — avtomatlashtirilgan va bepul SSL/TLS sertifikatlar beruvchi xizmat.

Certbot yordamida o‘rnatish:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Apache uchun:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

Certbot avtomatik ravishda sertifikatni o‘rnatadi va konfiguratsiyani yangilaydi.

Sertifikatni avtomatik yangilash

Let's Encrypt sertifikatlari 90 kun amal qiladi. Certbot avtomatik yangilash uchun cron yoki systemd timer o‘rnatadi:

sudo certbot renew --dry-run

6. Sertifikatlarni boshqarish bo‘yicha tavsiyalar

  • Sertifikat amal qilish muddatini doimiy tekshirib boring.
  • Maxfiy kalitlarni (private key) hech qachon uchinchi tomonga bermang.
  • Sertifikatlarni faqat ishonchli CA orqali oling.
  • Sertifikat va kalit fayllariga faqat root yoki maxsus foydalanuvchi kirishiga ruxsat bering.
  • Sertifikatlarni yangilashni avtomatlashtiring.

Xulosa

SSL/TLS sertifikatlari yordamida server va foydalanuvchi o‘rtasidagi aloqani shifrlash, ma’lumotlarni himoyalash va xizmatlar ishonchliligini oshirish mumkin. To‘g‘ri boshqaruv va monitoring orqali xavfsizlik darajasini yuqori saqlash va zamonaviy talablarni bajarish osonlashadi.